package com.ymt.fmd.platform.dao.mysql;

import com.ymt.fmd.platform.model.PI18n;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 多语言dao类
 * @author huangzhen
 * 2013-10-18
 *
 */
@Mapper
public interface PI18nMapper {
	/**
	 * 删除国际化语言
	 * @param type
	 * @param relationkey
	 * @param lang
	 * @return
	 */
	int deleteByPrimaryKey(@Param("tenantId") String tenantId, 
			@Param("target") String target, 
			@Param("category") String category, 
			@Param("type") String type, 
			@Param("relationkey") String relationkey, 
			@Param("lang") String lang);
    /**
     * 插入国际化语言对象
     * @param record
     * @return
     */
    int insert(PI18n record);
    /**
     * 通过主键查询国际化语言
     * @param type
     * @param relationkey
     * @param lang
     * @return
     */
    PI18n selectByPrimaryKey(@Param("tenantId") String tenantId, 
    		@Param("target") String target,
    		@Param("category") String category, 
    		@Param("type") String type, 
    		@Param("relationkey") String relationkey, 
    		@Param("lang") String lang);
    /**
     * 选择多有多语言
     * @return
     */
    List<PI18n> selectAll(@Param("tenantId") String tenantId);
    /**
     * 更新数多语言
     * @param record
     * @return
     */
    int updateByPrimaryKey(PI18n record);
    /**
     * 通过资源获取多语言列表
     * @param relationkey
     * @return
     */
    List<PI18n> selectByRelationkey(@Param("tenantId") String tenantId, 
    		@Param("relationkey") String relationkey);
    
    /**
     * 通过对象获取多语言列表
     * @param relationkey
     * @return
     */
    List<PI18n> selectByObject(PI18n i18n);
	
    /**
     * 删除国际化信息通过 relationkey
     * @param relationkey
     * @return
     */
    int deleteI18nByRealationkey(@Param("tenantId") String tenantId, 
    		@Param("relationkey") String relationkey);
    
    /**
	 * Get all i18n list by category
	 * @param category
	 * @return
	 */
	List<Map<String,?>> getI18nTypesByCategory(@Param("tenantId") String tenantId, @Param("category") String category);
	 /**
     * 获取同资源菜单类型
     * @param cateGroy
     * @return
     */
    public List<Map<String,String>> getResCateGroys(@Param("tenantId") String tenantId, 
    		@Param("lang")String lang,
    		@Param("menuCode")String menuCode );
    /**
     * 批量添加资源
     * @param i18List
     */
	void batchInsert(List<PI18n> i18List);
	/**
     * 获取标题名称(导出功能)
     * @param tablename
     * @param lnag
     * @return
     */
    List<Map<String,String>> getColumnNameByLang(@Param("tenantId") String tenantId, 
    		@Param("tablename") String tablename, 
    		@Param("lang") String lang);
    /**
     * 删除资源BPD_信息
     * @param resid
     * @param uri
     */
	void deleteBpdRec(@Param("tenantId") String tenantId, 
			@Param("uri")String uri,
			@Param("type")String type);
	/**
	 * 查询系统类别增强
	 * @param i18nCategoryEnum
	 * @return
	 */
	List<Map<String, ?>> getI18nTypesByType(Map<String,String> map);
	/**
	 * @param param
	 * @return
	 */
	List<PI18n> getMeTaValues(Map<String, String> param);
	/**
	 * 获取级别类型
	 * @return
	 */
	List<Map<String, String>> getClassInfo(Map<String,String> map);
	/**
	 * 删除数据
	 * @param param
	 */
	void deleteByPrimaryParams(Map<String, String> param);
	/**
	 * 
	 * @param type
	 * @return
	 */
	int getCountByTarget(@Param("tenantId") String tenantId, 
			@Param("target")String target);
	
	/**
	 * Get max sort
	 * @param i18n
	 * @return
	 */
	Map<String, ?> getMaxSortByType(PI18n i18n);
	
	/**
	 * update sort
	 * @param category
	 * @param target
	 * @param type
	 * @param relationkey
	 * @param sort
	 */
	void updateSort(@Param("tenantId") String tenantId, 
			@Param("category")String category,
			@Param("target")String target,
			@Param("type")String type,
			@Param("relationkey")String relationkey,
			@Param("sort")String sort);
	
	/**
     * query by object
     * @param record
     * @return
     */
    List<Map<String, ?>> pagingSelect(Map<String, Object> params);
    
    /**
     * query by object
     * @param record
     * @return
     */
    Map<String,?> pagingSelectCount(Map<String, Object> params);
    
}